/**
 * 错误码映射
 * 用于将后端返回的错误码转换为前端友好的错误提示
 */

/**
 * 错误码映射表
 */
export const errorCodeMap: Record<string | number, string> = {
  0: '操作成功',
  100000: '系统异常',
  100001: '参数错误',
  100002: '请求失败',
  100003: '未授权，请先登录',
  100004: '权限不足',
  100005: '资源不存在',
  100006: '服务暂不可用',
  100007: '操作频繁，请稍后再试',
  100008: '数据验证失败',
  // 可以根据后端错误码继续添加
};

/**
 * 获取错误提示信息
 * @param code 错误码
 * @param defaultMsg 默认错误信息，当错误码未定义时使用
 * @returns 错误提示信息
 */
export const getErrorMessage = (code: string | number, defaultMsg?: string): string => {
  return errorCodeMap[code] || defaultMsg || '未知错误';
};

/**
 * 显示错误提示
 * @param code 错误码
 * @param defaultMsg 默认错误信息
 */
export const showErrorToast = (code: string | number, defaultMsg?: string): void => {
  const message = getErrorMessage(code, defaultMsg);
  uni.showToast({
    title: message,
    icon: 'none',
    duration: 2000
  });
};

/**
 * 处理API响应错误
 * @param response API响应对象
 * @param defaultMsg 默认错误信息
 * @returns 是否为成功响应
 */
export const handleApiError = (response: { code: number; msg?: string }, defaultMsg?: string): boolean => {
  if (response.code === 0) {
    return true;
  }
  
  showErrorToast(response.code, response.msg || defaultMsg);
  return false;
}; 